CryptextFido2.Win10 - DLL fuer Cryptext build 26 (29.09.2026)

DLL: 1.305.582 Bytes (ca. 1,25 MiB), unkomprimiert; kein EXE-Packer.
STATUS: Kompiliert; neue USB/PCSC-DLL noch nicht auf Windows-Hardware getestet.
Der vorherige USB-Stand wurde vom Anwender erfolgreich getestet. Diese Aussage
ist kein Hardwaretest des neuen PC/SC-Transports.

bin/CryptextFido2.Win10.dll: Windows x64, ABI 1, USB und PC/SC CTAP2/hmac-secret.
bin/CryptextFido2Probe.exe: optionaler Hardwaretest, legt ein Credential an
und vergleicht das erneut abgerufene Secret; keine Dateiverschluesselung.

Grenzen:
- Windows 10 x64 (1903+) / Windows 11, direkter USB-Zugriff benötigt Administratorrechte.
- USB- oder PC/SC-Geraet mit FIDO2/hmac-secret im Dialog auswaehlen.
- PC/SC erzwingt keine Erhoehung; der konkrete Leser benoetigt Hardwaretests.
- PIN muss bereits eingerichtet sein; kein PIN-Setup/Reset im Programm.
- Kontaktlose FIDO2-Karten ueber PC/SC moeglich; kein BLE/Windows Hello.
- Neuverschlüsselung: Credential-Erzeugung und anschließendes Secret-Abrufen,
  deshalb ggf. zwei Berührungen. PIN nur für diesen Vorgang im RAM.
- Kein Windows-Sicherheitsdialog: DLL hat eigene PIN-Abfrage.
- Keine automatische PIN-Wiederholung. Abbruch wartet auf das Ende der Geräte-I/O.
- Dateiformatkompatibilität zu Cryptext v3 Profil 1/2 ist beabsichtigt, noch nicht
  auf echter Hardware zwischen Windows-WebAuthn und dieser DLL bestätigt.
- Entwicklungsstand; weiterhin nur Kopien von Testdateien verwenden.

Schnittstelle (Windows x64 ABI; siehe src/cryptext_fido2.h):
DWORD CryptextFido2Abi(void) -> 1
DWORD CryptextFido2Run(HWND owner, DWORD flags, BYTE* header1136, BYTE* root32)
void  CryptextFido2Cancel(void)
DWORD CryptextFido2NeedsElevation(void) -> optionale Ergaenzung:
  0 = eingelegte Smartcard erkannt, Transportentscheidung im Dialog abwarten;
  1 = bisheriges USB-UAC-Verhalten. Keine APDU/PIN-Kommunikation in der Abfrage.
flags: Bit 0 = neues Credential; Bit 8 = englische Oberfläche; sonst 0.
Run synchron; erzeugt eigenen Dialog + Hardwareworker. Nicht reentrant.
header und root müssen gültige, getrennte Puffer sein. Keine Freigabe durch DLL.
Erfolg=0; Abbruch=0x800704C7; Administratorrechte fehlen=0x80070005.
FIDO-Fehler=0xA1F00000 | (libfido2-Fehler & 0xffff).
0xA1F10001: kein Gerät; 0003: hmac-secret fehlt;
0004: Antwortprüfung fehlgeschlagen. Root bei Fehler gelöscht.
Create schreibt nur Header[76..1135]: ID-Länge, RAW-Salt32, ID+Nullpadding.
Get liest dieselben Felder. Headerformatprüfung bleibt Aufgabe des Aufrufers.
RP-ID=cryptext.local, Origin=https://cryptext.local; frische Challenges,
ES256/non-discoverable, UP+UV erforderlich, RAW-Salt, genau 32 Byte Secret.
Keine Herstellerattestationsprüfung und keine Verwendung von Signaturen als Key.

Laden ausschließlich über absoluten Pfad neben der EXE mit LoadLibraryExW und
LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_SYSTEM32. ABI und alle drei
Exporte prüfen, Modul bis nach Rückkehr von Run geladen halten. Systembibliotheken
stammen aus Windows. libfido2, libcbor, LibreSSL und benötigter zlib-Code werden
statisch eingebunden; keine zusätzlichen Fremd-DLLs. Windows-UCRT wird benutzt.

Build unter Linux:
- xPack MinGW-w64 GCC 15.2.0-2 (x86_64-w64-mingw32-), CMake, make, pkg-config.
- Compiler/bin in PATH; bei xPack ggf. Compiler/libexec in LD_LIBRARY_PATH.
- bash build.sh (optional CMAKE=/pfad/zu/cmake, JOBS=4).
- Fremdquellen werden aus Platzgründen nicht mitgeliefert. Exakte Archive,
  Prüfsummen und Bezugsquellen: BUILD_PROVENANCE.json und vendor/README-DE.txt.
  Compiler wird nicht mitgeliefert.
- Größenoptimierung -Os, Funktions-/Datensektionen, Linker-GC, Debugstrip.
- ASLR, NX, High-Entropy-ASLR; Stackprotector in Wrapper/libfido2.

Verwendete Bibliotheken:
- libfido2 aus bereitgestelltem libfido2-main(2).zip (1.18.0-Entwicklungsstand)
- libcbor aus libcbor-master(1).zip (0.14.0)
- zlib aus zlib-develop(1).zip
- LibreSSL 4.3.2, wie vom beigefügten libfido2-Windows-Build vorgesehen:
  https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-4.3.2.tar.gz
Der beigefügte OpenSSL-4.2-Entwicklungsstand wird nicht verwendet.
Bibliothekslizenzen befinden sich unter licenses/third_party.
Cryptext-Quelltextlizenz: LICENSE_Source_Inspection_EN-DE.txt.
Die vollständige angepasste Datei liegt unter patches/libfido2-hid_win-cryptext.c.
Eigene Änderung an libfido2/src/hid_win.c: Abbruchprüfung in 100-ms-Schritten,
begrenztes Warten auf Schreib-I/O sowie vollständiges Beenden ausstehender I/O
vor Freigabe von OVERLAPPED-Strukturen und Puffern.

Build 26 aktiviert USE_PCSC=ON und linkt die Windows-Systembibliothek WinSCard.
patches/libfido2-pcsc-cryptext.c enthaelt kooperative Abbruchpruefung und
Lesernamen-Abgleich gegen die Auswahl. Ein laufendes SCardTransmit wird
abgewartet, nicht per Thread-Abbruch unterbrochen. Der Reader-Treiber bestimmt
dessen maximale Wartezeit; libfido2s 30-s-Timeout begrenzt diesen Aufruf nicht.
Bis zu 32 FIDO-Geraete werden erfasst; der libfido2-PC/SC-Code beruecksichtigt
maximal die ersten acht Leser. Zum Aktualisieren den Dialog erneut oeffnen.
